The present invention relates to software interfaces, and in particular, to systems and methods for adapting interfaces, such as software service interfaces.
There is an increasing acceptance of Service-Oriented Architectures (SOAs) as a paradigm for integrating software applications within and across organizational boundaries. In SOAs, independently developed and operated applications are made available as services that may be interconnected with one another using standardized protocols and languages. One of the cornerstones of SOAs is the principle that each service operates according to an interface. In a broad sense, a service's interface captures the types of messages that the service can produce and consume, the message encodings and transfer protocols that the service supports or requires, and the dependencies between message exchanges. Armed with such information, developers can build systems that draw upon functionality from multiple services and make them collaborate in complex manners.
Services may be reused across development projects, development teams, or even across organizational boundaries. It is thus normal to expect that services will be reused in contexts for which they were not originally designed. When seeking to reuse an existing service in a new context, it often happens that the interface that the service provides does not match the interface that it is required to provide in that context. For example, consider a procurement service which, after sending an order to an order management service, expects to receive one and only one response. Now, consider the case where this procurement service is required to engage in a collaboration wherein the order management service may send a first response acknowledging the order and accepting or rejecting a subset of its line items, and later on send zero, one or more additional updates to accept or reject the remaining line items as their availability is determined. This interface mismatch is illustrated in FIG. 1. The figure shows an interface provided by an existing service (the “provided” interface) and the interface that this service is expected to provide in a new context (the “required” interface). The “provided” interfaces shown in this example may be a fragment of an order management process implemented in XML Common Business Library (xCBL), which is an XML component library for business-to-business e-commerce, or in Universal Business Language (UBL), which is a generic XML interchange format for business documents. On the other hand, the “required” interface may be a RosettaNet standard interface process.
Cast more generally, service reuse leads to situations where a service is required to participate in multiple collaborations such that in each of them a different interface is required from it. These “required interfaces” may correspond to different message granularities, message types, and dependencies between message exchanges. Thus, service reuse calls for mechanisms to mediate between the interface natively provided by a service and the various interfaces that are required from it. This problem is sometimes referred to as service interface adaptation.
Service interfaces can be described from a structural perspective, where the focus is on message types, and from a behavioral perspective, where the focus is on control dependencies between message exchanges. The problem from the structural perspective is relatively well-understood. Current approaches for adapting structural mismatches in interfaces rely on transformation definition languages (e.g. XSLT) and schema mapping tools. In comparison, the problem of interface adaptation from a behavioral perspective is still open.
Accordingly, one problem that arises is how to enable a service implementing a given behavior (e.g. the behavior on the left-hand side of FIG. 1) to participate in interactions where a different behavior, yet the same functionality, is required from it (e.g. the behavior on the right-hand side of FIG. 1). Traditionally, this problem is addressed by developing adaptors using programming languages. However, these adaptors are costly to develop and to maintain. Furthermore, the use of programming languages makes it difficult to check that these adaptors correctly implement the intended adaptation logic or that they do not create deadlocks.
Thus, there is a need for improved techniques of adapting interfaces. The present invention solves these and other problems by providing improved systems and methods for adapting interface behaviors.